# import os
# import sys
#
#
# def main():
#     # print(os.path.abspath(__file__))
#     # print(os.path.dirname(os.path.abspath(__file__)))
#     # 步骤1：获取输入工作路径和输出路径
#     source_root = input("请输入要处理的源路径：").strip();
#     target_root = input("请输入目标路径：").strip();
#     if not os.path.exists(source_root):
#         print("输入的原始路径不存在")
#         return
#     # 步骤2：对输入工作目录下的文件进行记录读取
#     lines=[]
#
#     # 步骤3：对读取的记录进行分类保存
#     # 步骤4：在输出目录下生成4个分类记录文件
#
#
#     return
#
#
#
# if __name__ == "__main__":
#     if not getattr(sys, 'frozen', False):
#         base_dir = os.path.dirname(os.path.abspath(__file__))
#     else:
#         base_dir = sys._MEIPASS
#     print(base_dir)
#
#     main()


import os
import re
import sys

from PyInstaller.utils.osx import merge_into_fat_binary


def main():
    # 步骤1：获取输入工作路径和输出路径
    source_root = input("请输入要处理的源路径：").strip()
    target_root = input("请输入目标路径：").strip()

    # 检查源路径是否存在
    if not os.path.exists(source_root):
        print("输入的原始路径不存在")
        return

    # 创建目标目录（如果不存在）
    os.makedirs(target_root, exist_ok=True)

    # 步骤2：初始化分类列表
    shanxi_lines = []  # 山西
    neimenggu_lines = []  # 内蒙古
    jilin_lines = []  # 吉林
    heilongjiang_lines = []  # 黑龙江
    others_lines = []  # 其他错误记录
    # 步骤3：遍历源目录下的所有文件
    for root, _, files in os.walk(source_root):
        for file in files:
            file_path = os.path.join(root, file)
            try:
                # 尝试以UTF-8编码读取文件
                with open(file_path, 'r', encoding='utf-8') as f:
                    for line in f:
                        line = line.rstrip('\n')  # 移除行尾换行符
                        if not line:  # 跳过空行
                            continue
                        first_char = line[0]

                        # 分类判断
                        if re.match(r'^\d', first_char):  # 数字开头
                            shanxi_lines.append(line)
                        elif re.match(r'^[a-zA-Z]', first_char):  # 字母开头
                            neimenggu_lines.append(line)
                        elif re.match(r'^[\u4e00-\u9fff]', first_char):  # 汉字开头
                            jilin_lines.append(line)
                        else:  # 其他字符开头
                            heilongjiang_lines.append(line)
            except Exception as e:
                # 跳过无法读取的文件并打印警告
                print(f"警告: 跳过文件 {file_path} (错误: {str(e)})")

    # 步骤4：生成分类文件
    def write_category_file(lines, filename):
        if lines:  # 只有非空列表才写入
            with open(os.path.join(target_root, filename), 'w', encoding='utf-8') as f:
                f.write('\n'.join(lines))

    # 写入四个分类文件
    write_category_file(shanxi_lines, 'digit.txt')
    write_category_file(neimenggu_lines, 'letter.txt')
    write_category_file(jilin_lines, 'chinese.txt')
    write_category_file(heilongjiang_lines, 'other.txt')

    # 统计输出
    print(f"\n分类完成! 结果已保存到: {target_root}")
    print(f"数字开头: {len(shanxi_lines)} 行")
    print(f"字母开头: {len(neimenggu_lines)} 行")
    print(f"汉字开头: {len(jilin_lines)} 行")
    print(f"其他开头: {len(heilongjiang_lines)} 行")


if __name__ == "__main__":
    if not getattr(sys, 'frozen', False):
        base_path = os.path.dirname(os.path.abspath(__file__))
    else :
        base_path = sys._EIMPASS

    main()